package com.binya.lib.apk;

import android.content.Context;
import android.content.DialogInterface;
import android.view.KeyEvent;
import android.view.View;

import com.binya.lib.apk.callback.UpdateCallback;
import com.binya.lib.apk.callback.UpdatePlanCallback;
import com.binya.lib.apk.http.HttpManager;
import com.binya.lib.apk.http.OkHttpManager;

import java.io.File;

/**
 * @author ydh
 * Time 2023年11月29日
 */
public class AppUpdaterHelper {

//    static AppUpdaterHelper helper;
//
//    private AppUpdaterHelper() {
//    }
//
//    public static AppUpdaterHelper getInstance() {
//        if (helper == null) {
//            synchronized (AppUpdaterHelper.class) {
//                if (helper == null) {
//                    helper = new AppUpdaterHelper();
//                }
//            }
//        }
//        return helper;
//    }


    AppUpdater mAppUpdater;
    UpdatePlanCallback mCallback;

    public void updaterApp(Context context, String url, UpdatePlanCallback callback) {
        if (mAppUpdater != null) {
            return;
        }
        mCallback=callback;
        mAppUpdater = new AppUpdater.Builder(context)
                .setUrl(url)
                .build();
        mAppUpdater.setHttpManager(OkHttpManager.getInstance()) // 使用OkHttp的实现进行下载
                .setUpdateCallback(new UpdateCallback() { // 更新回调
                    @Override
                    public void onDownloading(boolean isDownloading) {
                        // 下载中：isDownloading为true时，表示已经在下载，即之前已经启动了下载；
                        // 为false时，表示当前未开始下载，即将开始下载
                    }

                    @Override
                    public void onStart(String url) {
                        // 开始下载
                    }

                    @Override
                    public void onProgress(long progress, long total, boolean isChanged) {
                        // 下载进度更新：建议在isChanged为true时，才去更新界面的进度；因为实际的进度变化频率很高
                        if (mCallback != null) {
                            mCallback.onProgress(progress, total, isChanged);
                        }
                    }

                    @Override
                    public void onFinish(File file) {
                        // 下载完成
                        clickCancel();
                    }

                    @Override
                    public void onError(Exception e) {
                        // 下载失败
                        clickCancel();
                    }

                    @Override
                    public void onCancel() {
                        // 取消下载
                        clickCancel();
                    }
                }).start();
    }

    public void clickCancel() {
        if (mAppUpdater != null) {
            mAppUpdater.stop();
        }
        mAppUpdater = null;
    }

    public void setCallback(UpdatePlanCallback mCallback) {
        this.mCallback = mCallback;
    }
}
